package perceptron;

import java.io.IOException;


/**
 * Interface représentant n'importe quel type de classifier (perceptron/plusieurs perceptron en 1vs ou 1vAll/PMC...)
 * @author simon
 */
public interface Classifier {
	
	/**
	 * Sauvegarder un classifieur sauvé sur le disque.
	 * @throws IOException 
	 */
	public void save(String path) throws IOException ;
	 
	/**
	 * Charger un classifieur sauvegardé sur le disque. 
	 * @throws IOException 
	 */
	public void load(String path) throws IOException ;
	
	/**
	 * Classifier la page d'url donnée.
	 * @throws IOException 
	 */
	public Results classifyPage(String url) throws IOException ;
	
	/**
	 * Classifier la page stockée à l'emplacement donné.
	 * @throws IOException 
	 */
	public Results classifyFile(String path) throws IOException ;
	
	/**
	 * Classifier la chaine passée directement en parametre.
	 * @throws IOException 
	 */
	public Results classifyString(String contentString) throws IOException ;
	
	/**
	 * Réaliser un apprentissage à partir de fichiers stockés sur le disque.
	 * @param path2Reps : liste des répertoire où se trouve les répertoire contenant les fichier des différentes classes.
	 * @throws IOException 
	 */
	public void learn(String path2Reps) throws IOException ;
	
	/**
	 * Réaliser un test à partir de fichiers stockés sur le disque.
	 * @param path2Reps : liste des répertoire où se trouve les fichier des différentes classes.
	 * @return la matrice de confusion
	 * @throws IOException 
	 */
	public double[][] test(String path2Reps) throws IOException ;
	
	/**
	 * Recuperer le nom du classifieur
	 */
	public String getName() ;
	
	

}
